<?php

namespace pmvc\ioc;

class OrderUtil {

	public static function sort(&$objects) {
		return uksort($objects, function($a, $b) {
			$i1 = OrderUtil::getOrder($a);
			$i2 = OrderUtil::getOrder($b);
			return ($i1 < $i2) ? -1 : ($i1 > $i2) ? 1 : 0;
		});
	}

	public static function getOrder($obj) {
		return ($obj instanceof Ordered)
			? intval($obj->getOrder())
			: intval(Ordered::LOWEST_PRECEDENCE);
	}

}

?>